
class KrawDemo : public KrawApp
{
public:
    
    bool Open();
    void Close();
    void Tick( float, float );
    void Draw();

private:
    
}

bool KrawDemo::Open()
{
    //load sample geometry
    if ( /*vertex shader shadowing*/ )
        //load shadow geometry, inserting shadow quads
    else
        //compute edges
}

void KrawDemo::Close()
{
    //unload all models and materials
}

void KrawDemo::Tick( float fTime, float fElapsedTime )
{
    if ( /*software shadow volumes*/ )
        //compute silhouette geometry
        //extrude geometry in CPU
}

void KrawDemo::Draw()
{
    //render regular geometry
    if ( /*software shadow volumes*/ )
        //render extruded shadow volumes
    else
        //render shadow geometry
}
